<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>jQuery方式文件上传</title>
    <script src="./lib/jquery.js"></script>
</head>

<body>
    <input type="file" id="file1" />
    <button id="btnUpload">上传文件</button>

    <br />
    <img src="./images/loading.gif" alt="" style="display: none;" id="loading" />

    <script>
        $(function () {
            $('#btnUpload').click(function () {
                // 上传URL： http://www.liulongbin.top:3006/api/upload/avatar
                // 参考步骤：
                // 1. 是否选择文件判断
                //    1. 给上传按钮绑定点击事件
                //    2. 通过 $('文件域选择器')[0].files 获取文件列表，判断长度是否大于0
                var files = $("#file1")[0].files
                if (files.length <= 0) return alert('请选择文件!!!')

                // 2. 利用 FormData 封装上传的文件
                //    1. 初始化 FormData
                //    2. 利用 append 方法追加文件对象
                var fd = new FormData()
                fd.append('avatar', files[0])
                // console.log(fd);
                // 3. 利用 $.ajax() 发起请求
                //    1. 设置 contentType: false；不修改 Content-Type 属性，使用 FormData 默认的 Content-Type 值
                $.ajax({
                    method: 'POST',
                    data: fd,
                    url: 'http://www.liulongbin.top:3006/api/upload/avatar',
                    contentType: false,
                    processData: false,
                    success: res => {
                        console.log(res);
                    }
                })
                //    2. 设置 processData: false；不对 FormData 中的数据进行 url 编码，而是将 FormData 数据原样发送到服务器
                // 4. 监听 ajax 开始和结束的监听来显示loading效果
                //    1. 在 ajaxStart(callback) 里面显示 loading
                //    2. 在 ajaxStop(callback) 里面隐藏loading
            });
        });
    </script>
</body>

</html>